/*
 * @Author: 可以清心
 * @Description: 
 * @Date: 2023-02-14 10:11:44
 * @LastEditTime: 2023-03-08 19:03:09
 */
// import 'babel-polyfill'
import Vue from 'vue'
import Vuex from 'vuex'
import VConsole from 'vconsole'
import App from '@/views/app'
import store from '@/service/store'
import Native from '@/service/native'
import router from '@/service/router/routesHandle'
import Http from '@/service/http'
import Token from '@/service/token'
import Storage from '@/service/storage'
import appBack from '@/service/router/back'
import watermark from './assets/js/watermask'
import { Toast } from 'vant'
import flexible from '@/common/lib/Flexible'
import mxLoading from '@/components/mx-loading/index' // 加载组件引入
import '@/common/lib' // lib 的引入
import 'mx-libs-styles/reset.less'


const vConsole = new VConsole()

/**
 * 引入flexible插件
 */
Vue.use(flexible)
Vue.use(mxLoading)

// 在全局上下文(global context)执行一次 fastclick 脚本
import('raw-loader!mx-libs-vendors/fastclick')
  .then(rawModule => window.eval.call(null, rawModule.default))
  .then(() => window.FastClick.attach(document.body))

if (process.env.NODE_ENV === 'production') {
  Vue.config.productionTip = false
}

for (let item of ['mapState', 'mapGetters', 'mapMutations', 'mapActions']) {
  window[item] = Vuex[item]
}

Vue.use(Native)
Vue.use(Http)
Vue.use(Token)
Vue.use(Toast)
Vue.use(Storage)
Vue.use(appBack)

Vue.prototype.$watermark = watermark

// 改变状态栏背景色
Native.api.statusBarColor(255, 255, 255, 1)
// 取消橡皮筋效果
Native.api.setBounces('0')
// 隐藏原生导航栏
Native.api.hideNav()
// 隐藏悬浮按钮
Native.api.hideFloat()

// 启动vue应用
function init() {
  /* 关闭加载等待框 */
  document.getElementById('mx-loading-animate').style.display = 'none'
  new Vue({
    router,
    store,
    render: h => h(App)
  }).$on('hook:mounted',function(){
  }).$mount('#app')
}

if (process.env.NODE_ENV === 'production') {
  // 当在手机端hascordova的时候， 需要在deviceready 执行之后才能调用原生方法
  document.addEventListener('deviceready', () => {
    store.dispatch('userStore/getMxUserInfo').then((user) => { // 调用store的action去获取用户信息，可以底座实现，可以是接口等其他方式实现
      init() // 获取用户信息之后才做启动
    })
  }, false)
} else {
  store.dispatch('userStore/getMxUserInfo').then((user) => { // 调用store的action去获取用户信息，可以底座实现，可以是接口等其他方式实现
    init() // 获取用户信息之后才做启动
  })
}
